package com.ktgj.pay.utils;

import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;

import java.io.*;
import java.util.Enumeration;
import java.util.Properties;


/**
 * Properties文件工具类
 * @author Maming
 *
 */
public class PropertiesUtil {
	
	//创建日志对象
	private static final Log logger = LogFactory.getLog(PropertiesUtil.class);
	private Properties propertie;
    
    /**
     * 初始化PropertiesUtil类
     */
    public PropertiesUtil(){
        propertie = new Properties();
    }
    
    /**
     * 初始化Configuration类
     * @param filePath 要读取的配置文件的路径+名称
     */
    public PropertiesUtil(String filePath){
        propertie = new Properties();
        try {
        	InputStream inputStream = this.getClass().getClassLoader().getResourceAsStream(filePath);
        	propertie.load(inputStream);
        	inputStream.close();
        } catch (FileNotFoundException ex) {
        	logger.error("读取属性文件--->失败！- 原因：文件路径错误或者文件不存在"+ex.getMessage());
            ex.printStackTrace();
        } catch (IOException ex) {
        	logger.error("装载文件--->失败!"+ex.getMessage());
            ex.printStackTrace();
        }
    }
    
    /**
     * 根据key获取value
     * @author jianfei
     * @date 2016年12月7日
     * @company 金色世纪（技术部）
     * @param key 取值的key
     * @return  value
     */
    public String getValue(String key){
        if(propertie.containsKey(key)){
            String value = propertie.getProperty(key);//得到某一属性的值
            return value;
        }
        else 
            return "";
    }
    
    /**
     * 指定properties文件的路径+文件名，根据key获取key的value
     * @author jianfei
     * @date 2016年12月7日
     * @company 金色世纪（技术部）
     * @param fileName
     * @param key
     * @return
     */
   /* public String getValue(String fileName, String key){
        try {
            String value = "";
            InputStream inputStream = this.getClass().getClassLoader().getResourceAsStream(fileName);
        	propertie.load(inputStream);
        	inputStream.close();
            if(propertie.containsKey(key)){
                value = propertie.getProperty(key);
                return value;
            }else
                return value;
        } catch (FileNotFoundException e) {
            e.printStackTrace();
            return "";
        } catch (IOException e) {
            e.printStackTrace();
            return "";
        } catch (Exception ex) {
            ex.printStackTrace();
            return "";
        }
    }*/
    
    public static String getValue(String filePath, String key) {
		Properties props = new Properties();
		InputStream in = null;
		String value = "";
		try {
			in = PropertiesUtil.class.getResourceAsStream(filePath);
			props.load(in);
			value = props.getProperty(key);
		} catch (Exception e) {
			logger.error(e);
		} finally {
			try {
				in.close();
			} catch (IOException e) {
				logger.error(e);
			}
		}
		return value;
	}
    
    
    /**
     * 
     * 返回属性列表中所有键的枚举
     * */
    public Enumeration propertyNames(){
    	return propertie.propertyNames();
    }
    
    
    
    
    
    
    
    
    /**
     * 根据相对路径获取value
     * @author jianfei
     * @date 2017年3月17日
     * @company 金色世纪（技术部）
     * @param filePath
     * @param key
     * @return
     */
    public static String getValueByRelativePath(String filePath, String key) {
		Properties props = new Properties();
		InputStream in = null;
		String value = "";
		try {
			in = PropertiesUtil.class.getResourceAsStream(filePath);
			props.load(in);
			value = props.getProperty(key);
		} catch (Exception e) {
			logger.error(e);
		} finally {
			try {
				in.close();
			} catch (IOException e) {
				logger.error(e);
			}
		}
		return value;
	}
    
    
    /**
     * 根据绝对路径获取linux下的properties中的value
     * @author jianfei
     * @date 2017年3月17日
     * @company 金色世纪（技术部）
     * @param filePath properties文件绝对路径
     * @param fileName properties文件名（带.properties后缀）
     * @param key  
     * @return
     */
    public static String getValueByAbsolutePath(String filePath,String key){
    	String value = "";
    	try {
			Properties configuration = new Properties();
			InputStream is = new FileInputStream(new File(filePath));
			configuration.load(is);
			value = configuration.getProperty(key);
			is.close();
		} catch (Exception e) {
			logger.error("getValueByAbsolutePath:获取失败");
		}
    	return value;
    }
    
    
    
    public static void main(String[] args) {
    	PropertiesUtil rc = new PropertiesUtil("config.properties");//相对路径
    	System.out.println(rc.getValue("validationQuery"));
	}
    
    
    
    

}
